package org.lboot.jpa.converter;

import cn.hutool.core.lang.Validator;
import cn.hutool.crypto.SecureUtil;
import cn.hutool.crypto.symmetric.SymmetricCrypto;
import lombok.extern.slf4j.Slf4j;
import org.lboot.core.constant.CommonConst;
import jakarta.persistence.*;

/**
 * @author kindear
 * password 加密解密
 */
/**
 * @author kindear
 * password 加密解密
 * 使用通用加密解密不安全 --> 弃用
 */
@Deprecated
@Slf4j
@Converter
public class EncryptConverter implements AttributeConverter<String,String> {

    private final String aesKey = CommonConst.AES_KEY;

    @Override
    public String convertToDatabaseColumn(String s) {
        if (Validator.isEmpty(s)){
            return null;
        }
        // 创建SymmetricCrypto对象
        SymmetricCrypto des = SecureUtil.des(aesKey.getBytes()); // 选择对称加密算法，这里使用DES算法，您可以根据需要选择其他算法
        return des.encryptHex(s); // 要加密的数据
    }

    @Override
    public String convertToEntityAttribute(String s) {
        if (Validator.isEmpty(s)){
            return null;
        }
        try {
            // 创建SymmetricCrypto对象
            SymmetricCrypto des = SecureUtil.des(aesKey.getBytes()); // 选择对称加密算法，这里使用DES算法，您可以根据需要选择其他算法
            return des.decryptStr(s); // 要解密的数据
        }catch (Exception e){
            return "******";
        }
    }
}

